/*
 * 文件名：Snippet.java
 * 版权：Copyright 2006-2013 lvxh Tech. Co. Ltd. All Rights Reserved. 
 * 描述： Snippet.java
 * 修改人：lxh
 * 修改时间：2013年10月17日
 * 修改内容：新增
 */
package com.lvxh.exp.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.log4j.Logger;

public class ExpSecurity
{
    /**
     * 调测日志记录器。
     */
    private static final Logger log = Logger.getLogger(ExpSecurity.class);
    

    /** 
     * MD5 
     */  
    public static final String MD5 = "MD5";  
    
    /** 
     * SHA-1 
     */  
    public static final String SHA1 = "SHA-1";  
    
    /** 
     * SHA-256 
     */  
    public static final String SHA256 = "SHA-256";  
    
    /** 
     *  
     * 对字符串根据摘要名进行摘要。可支持MD5,SHA-1,SHA-256,默认SHA-256 
     *  
     * @param encName 摘要名 
     * @param strSrc 摘要目标字符串 
     * @return 摘要结果字符串 
     */  
    public static String encrypt(String encName, final String strSrc)  
    {  
        MessageDigest md = null;  
        String strDes = null;  
    
        byte[] bt = strSrc.getBytes();  
        try  
        {  
            if (encName == null || encName.equals(""))  
            {  
                encName = "SHA-256";  
            }  
            md = MessageDigest.getInstance(encName);  
            md.update(bt);  
            // to HexString  
            strDes = bytes2Hex(md.digest());  
        }  
        catch (NoSuchAlgorithmException e)  
        {  
            return null;  
        }  
        return strDes;  
    }  
    
    /** 
     * 将byte数组转为16进制表示的字符串 
     *  
     * @param bts 源数组 
     * @return 16进制表示的字符串 
     */  
    public static String bytes2Hex(byte[] bts)  
    {  
        String des = "";  
        String tmp = null;  
        for (int i = 0; i < bts.length; i++)  
        {  
            tmp = Integer.toHexString(bts[i] & 0xFF);  
            if (tmp.length() == 1)  
            {  
                des += "0";  
            }  
            des += tmp;  
        }  
        return des;  
    }  
}

/**
 * TODO 添加类的一句话简单描述。
 * <p>
 * TODO 详细描述
 * <p>
 * TODO 示例代码
 * <pre>
 * </pre>
 * 
 * @author     lxh
 * @version    expweb 1.0.0 2013年10月17日
 * @since      expweb 1.0.0
 */
